Я пробую seed.rb впервые, и одна из моих моделей данных использует инкапсуляцию, предоставляемую денежным камнем.
Соответствующие драгоценные камни:
money (3.6.1)
rails (3.0.5)
Моя модель, таким образом,far:
app/models/list.rb
class List < ActiveRecord::Base
attr_accessible :alias, :unit, :participating_manufacturer, :quantity
:latest_price_cents, :latest_price_currency, :url
belongs_to :user
composed_of :latest_price,
:class_name => "Money",
:mapping => [%w(latest_price_cents latest_price_cents), %w(latest_price_currency currency_as_string)],
:constructor => Proc.new {
|latest_price_cents, latest_price_currency| Money.new(latest_price_cents ||
0, latest_price_currency || Money.default_currency)
},
:converter => Proc.new {
|value| value.respond_to?(:to_money) ? value.to_money : raise(ArgumentError,
"Can't convert #{value.class} to Money")
}
end
1) (успешно решено)
2) Когда я приступлю к написанию проверок, лучше было бы написать их для атрибута: latest_price или для: latest_price_cents &: атрибуты latest_price_currency отдельно?
/db/seeds.rb
users = User.create([{ :name => "Foo", :email => "foo@gmail.com",
:password => "foobar", :password_confirmation => "foobar" }])
# etc, will add more users to the array
list = List.create(:user_id => users.first.id, :alias => "Januvia 100mg",
:unit => "tablet", :participating_manufacturer => "Merck",
:quantity => 30, :latest_price_cents => 7500,
:latest_price_currency => "USD", :url =>
"http://www.foobar.com/januvia/100mg-tablets/")
3) Возможно, это мелочи, но в начале я должен назначать значения атрибуту virtual: latest_price или непосредственно атрибутам latest_price_cents и latest_price_currency?Есть ли способ использовать faker вместо /db/seeds.rb для выполнения этой задачи?
Я новичок в рельсах и веб-разработке.