我有一个简单的怀疑.. 我在表中有一个名为url的列。表中的每一行都是使用活动管理员创建的。因为没有规定给网址(应该是这样)。 它有另一个带有Page_name的列。并且通过一些计算(如下所示),我确实在变量中有所需的url。现在,我希望在创建此变量后立即使用此变量更新数据库中的此列URL。 这是我到目前为止所做的。
class CustomPage < ActiveRecord::Base
after_create :custom
def custom
@custom_page = CustomPage.all
p "---------------------------------------"
p @custom_page.last.id
url = "/custom_page/"+@custom_page.last.page_name.split(" ").join("_")
CustomPage.where(:id => @custom_page.last.id).update(:url => url)
end
end
我发现了某种错误。 错误的参数数量(1对2)..我希望这是一个非常小的东西.. 提前谢谢。
答案 0 :(得分:1)
此行应如下所示
CustomPage.where(:id => @custom_page.last.id).first.update(:url => url)
由于where
返回数组形式的ActiveRecord::Relation
,因此您需要从数组中提取对象
答案 1 :(得分:1)
您可以将id
传递给像这样的
CustomPage.update(@custom_page.last.id, :url => url)
但在这种特殊情况下,你可以做到
@custom_page.last.update_attribute(:url, url)
请注意,这些方法不会调用验证。为此,请致电
@custom_page.last.update_attributes(:url => url)