1

2つのテーブルがusersありblocked_users、、、からの関係をどのように定義blocked_usersusersますか?

例えば、

class User < Sequel::Model

  one_to_many :blocked_users,     :key=>:source_id
  one_to_many :blocked_by_users,  :key=>:target_id, :class => BlockedUser

end

ここに何を入れますか?:

# table => blocked_users, fields => "source_id", "target_id"

Class BlockedUser < Sequel:Model

  #fail => belongs_to :blocking_user_account, :class => User, :primary_key => :source_id
  #fail => belongs_to :blocked_user_account,  :class => User, :primary_key => :target_id

end

Userモデルからモデルをどのように参照しBlockedUserますか?

以下の修正を試しましたが、次のエラーで混乱しています。BlockedUserクラスを次のように再構築します。

class BlockedUser < Sequel::Model
  many_to_one :blocking_user, :class=>:User, :primary_key => :source_id
  many_to_one :blocked_user,  :class=>:User, :primary_key => :target_id
end

次のエラーが発生します。

.9.3p0 :003 > BlockedUser.all.first.blocked_user
   INFO - (0.000427s) SELECT * FROM `blocked_users`
NoMethodError: undefined method `blocked_user_id' for #<BlockedUser @values={:id=>1, :source_id=>1, :target_id=>2}>

ただし、これにより適切なクエリが実行されます。

class BlockedUser < Sequel::Model
  many_to_one :source, :class=>:User
  many_to_one :target, :class=>:User
end

BlockedUser.all.first.source
4

1 に答える 1

2

クラス名をシンボルとして指定する必要があります(belongs_toの代わりにmany_to_oneを使用します)。

class BlockedUser < Sequel:Model
  many_to_one :blocking_user, :class=>:User, :primary_key => :source_id
  many_to_one :blocked_user,  :class=>:User, :primary_key => :target_id
end
于 2012-06-28T17:52:56.490 に答える