6

Sequel gem の使用:

employees = DB[:prm_master__employee.identifier]
.join(:prm_master__employee_custom_fields.identifier, :employee => :employee)
.where("termination_date >= ?","06/01/2012")
.or("termination_date = NULL")
.and("employee = 'holderl'")

上記は次の場合に失敗します。

~/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/sequel-3.41.0/lib/sequel/adapters/tinytds.rb:221:in `fields': TinyTds::Error: Ambiguous column name 'employee'. (Sequel::DatabaseError)

エラー (従業員など、結合されたテーブル間で同じ列名) は理解できますが、ステートメントで従業員条件を修飾する方法がわかりません。これはand、テーブルが識別子メソッドを使用してアンダースコアを無視するためです。

4

2 に答える 2

14

答えは、実際に次を使用して列名を修飾することです。

Sequel.qualify(:table, :column)

または同等の短い構文:

Sequel[:table][:column]

その結果:

employees = DB[:prm_master__employee.identifier]
.join(:prm_master__employee_custom_fields.identifier, :employee => :employee)
.where("termination_date >= ?","06/01/2012")
.or("termination_date = NULL")
.and(Sequel.qualify(:prm_master__employee_custom_fields.identifier, :employee)  => "holderl")
于 2012-12-03T08:52:51.690 に答える
0

ユーザーエイリアス。または、table_name.column_nameを入力します

于 2012-12-03T08:23:48.773 に答える