Sequelのforeign_keyあたりの書き方
インサートするとき。
# coding: utf-8 require "pp" require "sequel" DB = Sequel.sqlite Sequel::Model.plugin(:schema) class Selector < Sequel::Model set_schema do primary_key :id string :name end create_table # class名の複数形 one_to_many :properties # 別名 => has_many end class Property < Sequel::Model set_schema do foreign_key :selector_id, :selectors string :value end create_table many_to_one :selector # 別名 => belongs_to end Selector.import([:name],[ ["header"], ["main"], ["footer"]]) header = Selector.first(name: "header") main = Selector.first(name: "main") footer = Selector.first(name: "footer") header.add_property(value: "width: 100%") main.add_property(value: "width: 960px") main.add_property(value: "margin: 1em") footer.add_property(value: "width: 100%") # 作られたテーブルの確認 p DB.tables # -> [:selectors, :properties] # 関連してるテーブルの確認 p Selector.associations # -> [:properties] p Property.associations # -> [:selector] # 参照 Selector.all .each { |row| pp row.properties } # -> # [#<Property @values={:selector_id=>1, :value=>"width: 100%"}>] # [#<Property @values={:selector_id=>2, :value=>"width: 960px"}>, # #<Property @values={:selector_id=>2, :value=>"margin: 1em"}>] # [#<Property @values={:selector_id=>3, :value=>"width: 100%"}>] p Property.first(value: "width: 960px") .selector # -> <Selector @values={:id=>2, :name=>"main"}> # 結果 pp Selector.all # -> # [#<Selector @values={:id=>1, :name=>"header"}>, # #<Selector @values={:id=>2, :name=>"main"}>, # #<Selector @values={:id=>3, :name=>"footer"}>] pp Property.all # -> # [#<Property @values={:selector_id=>1, :value=>"width: 100%"}>, # #<Property @values={:selector_id=>2, :value=>"width: 960px"}>, # #<Property @values={:selector_id=>2, :value=>"margin: 1em"}>, # #<Property @values={:selector_id=>3, :value=>"width: 100%"}>]
oneの方を1つ取ってきて、add_テーブル名の単数系
メソッドで入れる!