我有两种模式:
class Todo < ActiveRecord::Base
belongs_to :assigned_to, :class_name => "TeamMembership"
end
和
class TeamMembership < ActiveRecord::Base
has_many :assigned_todos, :class_name => 'Todo', :foreign_key => :assigned_to, :dependent => :destroy
end
当我这样做时:
Todo.new(:title=>'hello',:assigned_to=>TeamMembership.first)
(其中TeamMembership.first
是数据库中的有效记录),我得到Todo
:title = hello
:assigned_to = nil
为什么:assigned_to
为零,我该如何解决?
谢谢!
答案 0 :(得分:1)
执行此操作的“Rails方式”将是:
class Todo < ActiveRecord::Base
belongs_to :team_membership
end
class TeamMembership < ActiveRecord::Base
has_many :todos, depdendent: :destroy
end
t.references :team_membership
块中的create_table
行,用于创建todos
表的迁移。
然后创建一个标题为“hello”且属于第一个Todo
的新TeamMembership
,你可以这样做:
TeamMembership.first.todos.build(title: "hello")
请参阅http://guides.rubyonrails.org/association_basics.html#has-many-association-reference
可能有某些特定原因要您重命名关联&amp;外键,但你仍然可以在todos集合上使用build
方法。
答案 1 :(得分:0)
你添加了任何验证吗?如果是,那么试试控制台Todo.new(:title =&gt;'你好',:assigned_to =&gt; TeamMembership.first,:validate =&gt;'false') 并看到其他明智的结果请告诉我Todo的属性
答案 2 :(得分:0)
好的,事实证明问题是: