2

モデル用の json APIUserUser belongs_to :role. json API を作成し、Role含めたい属性をホワイトリストに登録しましたが、ホワイトリストに登録された属性は、user#showアクションにアクセスするたびに無視されます。

私のファイルでは、とRoleSerializerの 2 つの属性のみにアクセスできるように指定しました。「roles#show」アクションに移動すると、これは正常に機能し、これら 2 つの属性のみがレンダリングされます。:id:name

/roles/1.json

{"role":{"id":1,"name":"Admin"}}

ただし、この json 応答は json 応答には使用されませんuser#showcreated_atand属性を使い続けupdated_atますが、これは望ましくありません。

/users/1.json

{ 
  "user": { 
      "id": 1,
      "email": "dietz.72@osu.edu",
      "name_n": "dietz.72", 
      "first_name": "Peter", 
      "last_name": "Dietz",
      "role": {  
          "created_at": "2013-08-08T00:21:56Z",
          "id":1,
          "name": "Admin",
          "updated_at": "2013-08-08T00:21:56Z" } } }

以下のコードを含めて、:role属性をリストする複数の方法を試しました。user_serializer.rb残念ながら、これは機能しません。

user_serializer.rb

class UserSerializer < ActiveModel::Serializer
  attributes :id, :email, :name_n, :first_name, :last_name

  # I also tried attributes :role
  attribute :role, serializer: RoleSerializer
end

users_controller.rb - アクションを表示

def show
  @user = User.where(id: params[:id]).first

  respond_to do |format|
    format.html
    format.json { render json: users }
  end
end

user.rb

class User < ActiveRecord::Base
  attr_accessible :email, :emplid, :name_n, :first_name, :last_name

  belongs_to :role
  has_many :agreements, foreign_key: "student_id"
  has_many :forms, through: :agreements, foreign_key: "student_id"

  def active_model_serializer
    UserSerializer
  end
  ...
end
4

1 に答える 1