保存到数据库中的特定列

时间:2014-05-12 05:17:05

标签: ruby-on-rails ruby ruby-on-rails-4

我有一个简单的怀疑.. 我在表中有一个名为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)..我希望这是一个非常小的东西.. 提前谢谢。

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)