1

ユーザーモデルと承認モデルを持つレールアプリケーションに取り組んでいます。各ユーザーは多くの承認を持つことができ、すべての承認は特定のユーザーに属します。これには belongs_to 関連付けを使用しました。今、特定のユーザーの承認にアクセスしようとしているとき

user = User.find(params(:id))
auth = user.authorizations

今問題は、使用して承認のフィールドにアクセスしようとしたときです

auth.id

メソッドが見つかりませんというエラーが表示されますが、次の

Authorization.first.id 

正常に動作します。それらの違いは何ですか?

4

3 に答える 3

2

ユーザーがユーザーの承認の配列を返す場合has_many :authorizations(user.authorizations実際には返されますAR:Relationが、今は問題ではありません)。したがって、id使用できる最初の承認をuser.authorizations.first取得したい場合、およびこのユーザーの承認のすべての ID を取得したい場合は、使用できますuser.authorizations.map(&:id)

于 2012-04-24T07:08:59.803 に答える
1
@authorizations = user.authorizations

承認のリストを返します。したがって、ループを形成してからフィールド値を取得するだけです。例

@authorizations.each do |auth|
  auth.id
end
于 2012-04-24T07:09:50.797 に答える
1
 auth = user.authorizations

auth は Authorization オブジェクトの配列になります

 auth.first.id 

配列が空でない限り機能します

于 2012-04-24T07:08:24.667 に答える