gpt4 book ai didi

ruby-on-rails - ruby rails : check the amount of products a shop owns

转载 作者:数据小太阳 更新时间:2023-10-29 07:42:15 25 4
gpt4 key购买 nike

我正在搞一个测试/练习项目,只是为了更好地理解 Rails。

在我的例子中,我有三个模型:商店、用户和产品。

商店可以分为三种类型:基本型、中型、大型。基本型最多可以有 10 个产品,中型 50 个,大型 100 个。

我正在尝试验证此类数据、商店类型并在创建新产品时检查它拥有多少产品。

到目前为止,我想出了这段代码(在 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

我什至不知道我的解决方案背后的逻辑是否正确。也许我应该使用

进行验证
has_many

及其“大小”方法?我不知道。 :)

最佳答案

至少将 account = 1 更改为 account == 1account = 2account = 3 也是如此。

除此之外,我建议您查看 Rails Guides感受一下使用 Rails。

话虽如此,我建议这样:

class Shop < ActiveRecord::Base
has_many :products
validates :products_within_limit

# Instead of the 'account' column, you could make a 'max_size' column.
# Then you can simply do:
def products_within_limit
if products.size > max_size
errors.add_to_base("Shop cannot own more products than its limit")
end
end

def is_basic?
products.size >= 10 && products.size < 50
end

def is_medium?
products.size >= 50 && products.size < 100
end

def is_big?
products.size >= 100
end

def shop_size
if self.is_basic?
'basic'
elsif self.is_medium?
'medium'
elsif self.is_big?
'big'
end
end
end

这使您可以:

# Get shop with id = 1
shop = Shop.find(1)

# Suppose shop '1' has 18 products:
shop.is_big? # output false
shop.is_medium? # output false
shop.is_basic? # output true
shop.shop_size # output 'basic'

关于ruby-on-rails - ruby rails : check the amount of products a shop owns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3914396/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com