相关疑难解决方法(0)

如何在Rails activerecord模型中为属性创建默认值?

我想通过在ActiveRecord中定义属性来为属性创建默认值.默认情况下,每次创建记录时,我都想拥有属性的默认值:status.我试着这样做:

class Task < ActiveRecord::Base
  def status=(status)
    status = 'P'
    write_attribute(:status, status)
  end
end
Run Code Online (Sandbox Code Playgroud)

但是在创建时我仍然从数据库中检索此错误:

ActiveRecord::StatementInvalid: Mysql::Error: Column 'status' cannot be null
Run Code Online (Sandbox Code Playgroud)

因此我假设该值未应用于该属性.

在Rails中这样做的优雅方法是什么?

非常感谢.

activerecord ruby-on-rails

190
推荐指数
9
解决办法
19万
查看次数

如何在Rails 3中将多个属性传递给find_or_create_by?

我想使用find_or_create_by,但是这个语句不起作用.它不与其他属性"查找"或"创建".

productproperty = ProductProperty.find_or_create_by_product_id(:product_id => product.id, :property_id => property.id, :value => d[descname])
Run Code Online (Sandbox Code Playgroud)

似乎很少或没有关于在Rails 3中使用动态查找器的信息."和" - 这些一起给了我一个未知的方法错误.

更新:

最初我无法让以下工作.请假设我不是白痴,"产品"是产品AR模型的一个实例.

product.product_properties.find_or_create_by_property_id_and_value(:property_id => 1, :value => "X")
Run Code Online (Sandbox Code Playgroud)

错误方法是:

no such keys: property_id, value
Run Code Online (Sandbox Code Playgroud)

我无法理解这一点.只有今天早上我找到了传递这样的值的引用:

product.product_properties.find_or_create_by_property_id_and_value(1, "X")
Run Code Online (Sandbox Code Playgroud)

瞧,它运作正常.我原本希望哈希在相同的情况下工作,但我猜不是.

如果你错过互联网上的某些内容,我想你会得到一次投票?

ruby-on-rails ruby-on-rails-3

42
推荐指数
5
解决办法
4万
查看次数