【发布时间】:2015-04-10 19:50:54
【问题描述】:
我是 Rails 和应用开发新手,如有错误请见谅。
我有一个名为 Product 的模型,它具有以下(模式):
t.string "name"
t.integer "cost"
t.boolean "in_stock"
t.datetime "sold_date"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "quantity"
如果数量大于 1,我希望 in_stock 返回 true,否则返回 false。我在 product.rb 文件中编写了以下代码,但是当我通过控制台输入产品数量时,它似乎没有做任何事情。我不确定是否必须将数据库列(in_stock 和数量)链接到 if 语句。或者,即使这是做事的正确方式。我会很感激任何建议。谢谢!
class Product < ActiveRecord::Base
belongs_to :company
def in_stock
if quantity >= 1
in_stock true
else
in_stock false
end
【问题讨论】:
-
你必须使用回调。
-
@bsvin33t 为什么?我不知道
-
如果被滥用,他们会创造虽然来处理情况。例如:在回调中发送电子邮件,坏主意。我在一次聚会中听到的轶事,有类似的事情,当他们迁移数据库并运行 rake 任务时,他们的用户充斥着大量的文本和电子邮件。
-
@bsvin33t 我觉得如果使用得当,回调是一个强大的工具。在回调中发送电子邮件可能确实是个坏主意,但仍然可以添加检查并小心。此外,如果他想将 in_stock 布尔值保存在 DB 中,他可能需要使用回调。他们并不总是邪恶的:)
标签: ruby-on-rails ruby if-statement model