你好,我确实有这两个模型,我想检查我的模型关联是否应该通过rails控制台的方式工作。
我无法进行协会工作。关系如下: 一个事件有一个规则,一个规则属于一个事件。没有事件就不能成为规则,如果没有规则就不能成为事件。
知道如何使用rails console进行测试吗?
模型1:
class Event < ActiveRecord::Base
has_and_belongs_to_many :users
has_one :rule
has_many :grand_prixes
belongs_to :eventable, polymorphic: :true
end
模型2
class Rule < ActiveRecord::Base
belongs_to :events
end
规则&#39;架构:
create_table "rules", force: :cascade do |t|
t.boolean "abs"
t.boolean "tc"
t.boolean "allow_auto_clutch"
t.boolean "allow_sc"
t.boolean "allow_throttle_blip"
t.boolean "dynamic_track"
t.integer "damage_mult"
t.integer "fuel_rate"
t.integer "tyre_wear_rate"
t.integer "quali_percentage"
t.integer "min_valid_laps"
t.integer "event_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
add_index "rules", ["event_id"], name: "index_rules_on_event_id"
活动&#39;架构:
create_table "events", force: :cascade do |t|
t.string "event_type"
t.string "name", null: false
t.datetime "starting_date"
t.datetime "ending_date"
t.integer "eventable_id"
t.string "eventable_type"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
add_index "events", ["eventable_type", "eventable_id"], name: "index_events_on_eventable_type_and_eventable_id"
提前致谢。
答案 0 :(得分:0)
更改您的代码:
class Rule < ActiveRecord::Base
belongs_to :event
end
使用belongs_to
时,您应该使用event
而不是events
这样的单数。
在控制台中,您可以检查关联,如:
Event.first.rule if Event.first.present?
有关详细信息,请阅读http://guides.rubyonrails.org/association_basics.html文档。
答案 1 :(得分:0)
我认为你的belongs_to :events
应该是单数的,以遵循铁道惯例:
class Rule < ActiveRecord::Base
belongs_to :event
end
belongs_to
和has_one
的关系的常规名称始终是单数,has_many
的复数常为复数。
相关文档:http://guides.rubyonrails.org/association_basics.html#belongs-to-association-reference
编辑:还有很多话要说
您写道:
ev = Event.create(:name "test1").save
rule = Rule.create.save
create
已经是new
,后跟save
。之后无需保存。key: value
在ruby中是非常常见的,应该很好理解:你实际上是在写一个哈希,相当于{:key => value}
,但语法允许你写{{1} }只有你的钥匙是一个符号。key: value
和eventable_type
应位于表eventable_id
中,该表正在承载与可执行事物的多态关系。事件不应该包含这些列,并且规则中根本不应存在event_id。以下是您可以在控制台中编写的用于创建事件和规则的示例:
rules
答案 2 :(得分:0)
当前代码:
(p->*func)()
SCHEMA:
class Rule < ActiveRecord::Base
belongs_to :event
end
class Event < ActiveRecord::Base
has_and_belongs_to_many :users
has_one :rule
has_many :grand_prixes
belongs_to :eventable, polymorphic: :true
end
在控制台上测试:
create_table "rules", force: :cascade do |t|
t.boolean "abs"
t.boolean "tc"
t.boolean "allow_auto_clutch"
t.boolean "allow_sc"
t.boolean "allow_throttle_blip"
t.boolean "dynamic_track"
t.integer "damage_mult"
t.integer "fuel_rate"
t.integer "tyre_wear_rate"
t.integer "quali_percentage"
t.integer "min_valid_laps"
t.integer "event_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
add_index "rules", ["event_id"], name: "index_rules_on_event_id", unique: true
create_table "events", force: :cascade do |t|
t.string "event_type"
t.string "name", null: false
t.datetime "starting_date"
t.datetime "ending_date"
t.integer "eventable_id"
t.string "eventable_type"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
add_index "events", ["eventable_type", "eventable_id"], name: "index_events_on_eventable_type_and_eventable_id"
不知道如何通过控制台链接它。