我想在模型中为我的字段提供条件,这样当我从控制器新操作定义一个值时,它会自动更改另一个字段的值。
例如
我的迁移如下
class CreateTickets < ActiveRecord::Migration[5.0]
def change
create_table :tickets do |t|
t.integer :card_no
t.integer :token_num
t.string :name
t.integer:token_left
t.timestamps
end
end
end
然后,当我为表分配值时,我想自己更改token_left的值。
条件是:
token_left = 50 - Ticket.count
Ticket是我的模型类,我的模型现在是空的,但是如何给出这样的条件,这样每当我创建一个新的数据而不是token_left值本身就会改变。
谢谢
答案 0 :(得分:1)
您可以在模型中使用before_create
回调:
class Ticket < ApplicationRecord
before_create :update_token_left
# scopes, associations, methods, etc..
private
def update_token_left
self.token_left = 50 - Ticket.count
end
end