我试图创建一个日志已每次更新中更改为某个消息的属性。属性为IssueStatus
和IssueType
,并且都与UpdateAction
有两个多态关联,这就完美地节省了changed_from_id
和changed_from_type
以及changed_to_id
和changed_to_type
。Has_many/belongs_to关联由于多态关联而不能保存?
class IssueStatus < ActiveRecord::Base
has_many :update_actions, :as => :changed_to
has_many :update_actions, :as => :changed_from
end
class IssueType < ActiveRecord::Base
has_many :update_actions, :as => :changed_to
has_many :update_actions, :as => :changed_from
end
class Update < ActiveRecord::Base
has_many :update_actions
end
class UpdateAction < ActiveRecord::Base
belongs_to :changed_to, :polymorphic => true
belongs_to :changed_from, :polymorphic => true
belongs_to :update
end
的问题是,试图保存UpdateAction
到Update.update_actions
不起作用。对于save
和save!
,Rails返回true
,但是我的development.log显示没有执行SQL查询。我找不到我做错了什么,因为没有记录(或者我不知道如何找到它)。从控制台工作:
>> action = UpdateAction.new
=> #<UpdateAction id: nil, changed_from_id: nil, changed_from_type: nil, changed_to_id: nil, changed_to_type: nil, update_id: nil, created_at: nil, updated_at: nil>
>> action.changed_from = from
=> #<IssueStatus id: 2, name: "Open", created_at: "2009-12-02 05:34:41", updated_at: "2009-12-02 05:34:41">
>> action.changed_to = to
=> #<IssueStatus id: 1, name: "Closed", created_at: "2009-12-02 05:34:30", updated_at: "2009-12-02 05:34:30">
>> action.save
=> true
>> update = Update.last
=> #<Update id: 1, description: "Yawn", created_at: "2009-12-02 05:19:25", updated_at: "2009-12-02 05:19:25">
>> u.update_actions << action
=> [#<UpdateAction id: 2, changed_from_id: 2, changed_from_type: "IssueStatus", changed_to_id: 1, changed_to_type: "IssueStatus", update_id: 1, created_at: "2009-12-02 05:35:16", updated_at: "2009-12-02 05:35:16">]
>> u.save
=> true
>> u.update_actions
=> [#<UpdateAction id: 2, changed_from_id: 2, changed_from_type: "IssueStatus", changed_to_id: 1, changed_to_type: "IssueStatus", update_id: 1, created_at: "2009-12-02 05:35:16", updated_at: "2009-12-02 05:35:16">]
>> u.reload
=> #<Update id: 1, description: "Yawn", created_at: "2009-12-02 05:19:25", updated_at: "2009-12-02 05:19:25">
>> u.update_actions
=> []
任何帮助,将不胜感激,我想我做错了,但我一直在寻找它太长弄清楚什么。提前致谢!
u.update_actions << action'是update.update_actions << action'的拼写错误吗? – Swanand 2009-12-02 07:55:54
是的,这次我混淆了它们,但它并没有改变这个问题。 – Janteh 2009-12-02 09:25:26