Lea*_*RoR 5 ruby ruby-on-rails ruby-on-rails-3
我想播种我的Products并将它们分配给一个特定的User和Store.
Product.rb
class Product < ActiveRecord::Base
belongs_to :user
belongs_to :store
def product_store=(id)
self.store_id = id
end
end
Run Code Online (Sandbox Code Playgroud)
注意:Storebelongs_to Business(:business_name)
Seed.rb
这是我的基本设置:
user = User.create(:username => 'user', :email => 'user2@email.com')
store = Store.create(:business_name => 'store', :address => 'Japan')
Run Code Online (Sandbox Code Playgroud)
我尝试了这些,但他们没有工作:
# This gives random ID's ranging from 1 to 4425!?
user.products.create([{:name => "Apple", :product_store => Store.find_by_address('San Francisco, USA')}])
# This gives me undefined method 'walmart'.
user.store.products.create([ {:name => "Apple"} ])
Run Code Online (Sandbox Code Playgroud)
有没有办法设置ID,所以我可以将我Products与a Store和User?
更新 -
我已经尝试了下面的答案,仍然没有成功.有谁知道另一种方法吗?
小智 8
虽然听起来您找到了解决方法,但解决方案可能对其他人感兴趣.
来自你原来的种子.rb
user = User.create(:username => 'user', :email => 'user2@email.com')
store = Store.create(:business_name => 'store', :address => 'Japan')
Run Code Online (Sandbox Code Playgroud)
创建商店
Store.create({
user_id: user.id
store_id: store.id
}, without_protection: true)
Run Code Online (Sandbox Code Playgroud)
在原始代码中,声明了剪切的"user"和"store"变量.代码将user_id/store_id(由Store模型中的belongs_to关系推断的模型列)分配给"user"和"store"变量中存在的id值.
"without_protection:true"关闭id字段的批量分配保护.这在种子文件中是完全可以接受的,但在处理用户提供的数据时应该非常谨慎地使用.
| 归档时间: |
|
| 查看次数: |
11746 次 |
| 最近记录: |