为数据库

时间:2017-06-15 03:45:33

标签: ruby-on-rails ruby-on-rails-4 ruby-on-rails-5

我想在模型中为我的字段提供条件,这样当我从控制器新操作定义一个值时,它会自动更改另一个字段的值。

例如

我的迁移如下

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值本身就会改变。

谢谢

1 个答案:

答案 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