モデル用の json APIUser
とUser 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#show
。created_at
and属性を使い続け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