【发布时间】:2015-12-15 01:46:39
【问题描述】:
我有一个这样写的迁移文件:
class Character < ActiveRecord::Migration
def change
create_table :character_attributes do |t|
t.string :character_name
t.boolean :attr1, default: false, null: false
t.boolean :attr2, default: false, null: false
t.boolean :attr3, default: false, null: false
t.boolean :attr4, default: false, null: false
t.boolean :attr5, default: false, null: false
t.boolean :attr6, default: false, null: false
t.boolean :attr7, default: false, null: false
t.timestamps null: false
end
end
end
本质上,每个字符有 7 个可能的属性,但只能有一个(换句话说,如果七个字段之一为真,则其余为假)。
来自模型的其他讨论(即Rails 4.x how to query boolean value with activerecord?)查询。 但是您可以这样编写代码,以便通过对象内的多个字段/属性进行查询吗?即
Character.find_by_character_name("Jack").where(:attributes => true)
另外,我知道重新设计架构是一种选择,但现在我只想知道是否可以完成查询。
【问题讨论】:
-
我很难理解您需要这种表结构的场景。看起来像一个简单的
status枚举列就可以解决问题:api.rubyonrails.org/v4.1.0/classes/ActiveRecord/Enum.html -
韦斯说了什么。简而言之,这需要是一个值为“attr1”到“attr7”的单个字段,或者它们是什么。
标签: ruby-on-rails rails-migrations ruby-on-rails-4.2 querying sqlite3-ruby