在我的用户模型中,我可以有:
has_many :tasks
在我的任务模型中:
belongs_to :user
然后,假设外键'user_id'存储在任务表中,我可以使用:
@user.tasks
我的问题是,我如何声明has_many关系,这样我就可以引用用户的任务为:
@user.jobs
... 还是……
@user.foobars
非常感谢。
在我的用户模型中,我可以有:
has_many :tasks
在我的任务模型中:
belongs_to :user
然后,假设外键'user_id'存储在任务表中,我可以使用:
@user.tasks
我的问题是,我如何声明has_many关系,这样我就可以引用用户的任务为:
@user.jobs
... 还是……
@user.foobars
非常感谢。
当前回答
试试这个吧:
has_many :jobs, foreign_key: 'user_id', class_name: 'Task'
注意:as用于多态关联。
还有has_many的foreign_key选项。
其他回答
完成@SamSaffron的回答:
你可以用foreign_key或者inverse_of来使用class_name。我个人更喜欢更抽象的陈述句,但这真的只是一个品味问题:
class BlogPost
has_many :images, class_name: "BlogPostImage", inverse_of: :blog_post
end
你需要确保你在子模型上有belongs_to属性:
class BlogPostImage
belongs_to :blog_post
end
你也可以使用alias_attribute,如果你仍然希望能够将它们作为任务引用:
class User < ActiveRecord::Base
alias_attribute :jobs, :tasks
has_many :tasks
end
试试这个吧:
has_many :jobs, foreign_key: 'user_id', class_name: 'Task'
注意:as用于多态关联。
还有has_many的foreign_key选项。
如果你使用has_many through,并且想要别名:
has_many :alias_name, through: :model_name, source: :initial_name
(谢谢你的更正,萨米·伯恩鲍姆)