嗨(巨大的Rails新手在这里),我有以下型号:
class Shop < ActiveRecord::Base
belongs_to :user
validates_uniqueness_of :title, :user_id, :message => "is already being used"
end
Run Code Online (Sandbox Code Playgroud)
和
class User < ActiveRecord::Base
has_one :shop, :dependent => :destroy
end
Run Code Online (Sandbox Code Playgroud)
当我即将创建一个新商店时,我收到以下错误:
private method `create' called for nil:NilClass
Run Code Online (Sandbox Code Playgroud)
这是我的控制器:
@user = current_user
@shop = @user.shop.create(params[:shop])
Run Code Online (Sandbox Code Playgroud)
我通过阅读指南和教程尝试了不同的变化,但我比以前更困惑,无法让它工作.任何帮助将不胜感激.
我正在搞乱测试/练习项目,只是为了更好地理解Rails.
在我的情况下,我有三个模型:商店,用户和产品.
商店可以有三种类型:基本,中等,大型.基本最多可以有10个产品,中等50个,大100个.
我正在尝试验证这种数据,Shop的类型,并检查它在创建新产品时拥有多少产品.
到目前为止,我想出了这个代码(在shop.rb中),但它不起作用:
def lol
account = Shop.find_by_sql "SELECT account FROM shops WHERE user_id = 4 LIMIT 1"
products = Product.count_by_sql "SELECT COUNT(*) FROM products WHERE shop_id = 13"
if account = 1 && products >= 10
raise "message"
elsif account = 2 && products >= 50
raise "message"
else account = 3 && products >= 100
raise "message"
end
end
Run Code Online (Sandbox Code Playgroud)
我甚至不知道我的解决方案背后的逻辑是正确的还是什么.也许我应该验证使用
has_many
Run Code Online (Sandbox Code Playgroud)
和它的"大小"方法?我不知道.:)