Pergunta

Esta é provavelmente uma pergunta idiota, mas eu não consigo encontrar uma resposta boa. Eu quero saber a melhor maneira de remeter para o modelo que um objeto pertence.

Por exemplo:

class User < ActiveRecord::Base
  has_many :posts
end

class Post < ActiveRecord::Base
  belongs_to :users
end

Assim, para obter mensagens do usuário, eu posso usar user.posts, mas para obter o usuário do post, eu não posso fazer o inverso: post.user

Se eu adicionar um método de "usuário" com o modelo Post, ele funciona, mas não parece ser o melhor caminho.

class Post < ActiveRecord::Base
  belongs_to :users

  def user
    User.find(self.user_id)
  end
end

Se você olhar para este post http: //www.fortytwo .gr / blog / 18/9 Essential-Rails-Tips como um exemplo, você pode ver que os usos autor post.user.username, que não funciona fora da caixa, bem como: incluir = >. [: user], que também não funciona, mesmo com o método de "usuário" no modelo Post

Eu sei que isto é rudimentar, por isso obrigado por sua paciência. Eu só quero saber a melhor maneira de realizar essa relação.

Meu principal objetivo é escrever "achados" Usando aninhado inclui, que remetem para o usuário assim:

post = Post.find (: all,: incluir => [: user])

Quando eu tentar isso, eu recebo "ActiveRecord :: ConfigurationError: Associação chamado 'usuário' não foi encontrado, talvez você mal escrito que"

Muito obrigado.

Foi útil?

Solução

Eu sou um pouco novo para Rails, mas isso deve funcionar automaticamente ...

Ah - você nomeou a classe pai em Post como belongs_to :users; mas porque ele só pertence a um único usuário, Rails está esperando belongs_to :user (ou, é claro, belongs_to :users, :class_name => "User").

Isto é:

class Post < ActiveRecord::Base
  belongs_to :user
end

deve fazer o trabalho.

Outras dicas

pertence a um modelo devem ser no singular. como

belongs_to :user
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top