如何管理rails中的状态关联

时间:2016-06-03 12:16:01

标签: ruby-on-rails ruby

比方说,我有订单和状态。

状态:

  1. status_id:1,status_name:打开
  2. status_id:2,status_name:已关闭
  3. 订单:

    1. 订单#:1,status_id:1
    2. 如何在Ruby on Rails中管理关联?

      以下代码是否是最佳选择?

      class Status < ActiveRecord::Base
      
            has_many :orders
      
      end
      
      class Order < ActiveRecord::Base
      
            belongs_to :status
      
      end
      

1 个答案:

答案 0 :(得分:1)

对于你的问题我建议使用枚举。为此,您将有一个类Order,如下所示:

class Order < ActiveRecord::Base
    enum status: [:open, :closed]
end

这将使您能够调用以下方法:

order = Order.new
order.closed? # => false
order.status # => "open"

请记住,当您定义枚举时,顺序很重要。所以,定义:

enum status: [:open, :closed]

不同于:

enum status: [:closed, :open]