我有“工具”和“借”表。
我正在使用Rails3,当我创建一个借出时,我希望它将该工具的属性状态更改为“U”。
这可能吗?
我试过模型借出
after_save :change_status
def change_status
tools.update_attribute(status, 'U')
end
我也试过,在同一型号上:
after_save :change_status
def change_status
self.tool.update_attribute(status, 'U')
end
调试日志没有成功或警告。
建议吗?
谢谢! :)
答案 0 :(得分:0)
首先,我假设您的Lend模型has_many:tools
为了能够执行tool.update_attribute
之类的操作,您需要使用accepts_nested_attributes_for
看看这些链接,它们可能会让你走上正确的道路:
RailsCasts #196 Nested Model Form Part 1
Active Record Nested Attributes
希望这有帮助。
答案 1 :(得分:0)
借出和工具之间有什么关系?如果Lend has_many工具,你将不得不做这样的事情:
def change_status
tools.each { |tool| tool.update_attributes(status: 'U') }
end
另请注意,我使用的是update_attributes,因为很快就会弃用update_attribute(singular)。
顺便说一句,你应该在Tool中创建一个方法来更新属性,Lend模型不应该知道如何将工具设置为借用。像这样的东西def loaned!
update_attributes status: 'U'
end