0

私のあいまいなトピックを許してください、私は現在、ユーザー、リスト、およびアイテムの3つのモデルを持つレールアプリケーションに取り組んでいます。ユーザーには多くのリストがあり、リストには多くのアイテムを含めることができます。現在、ユーザーが持っているリストの数を表示する方法に取り組んでおり、その中のアイテムの数をリストに表示できるようにする必要があります。リスト モデルで列項目を作成しなくても、このデータを解析する方法があると思います。私はレールに慣れていないので許してください。これを行うにはかなり簡単な方法があると確信しています。以下は、私のメソッドの構文と、クラス リストと項目です。前もって感謝します。(リストデータで解析される各リストのアイテム数を取得しようとしています)

def showLists
     pageSize = 10
     pageNum = 1
     if (params[:limit])
       pageSize = (params[:limit])
       pageSize = pageSize.to_i
     end
     pageNum= (params[:page]) 
     pageNum = pageNum.to_i   
     @key = PrivateKey.find(1)
     @key = @key.key     
     if (params[:apiKey]) == @key 
      @user = User.find_by_facebookexternalId(params[:id])
      if @user.access_key.key == (params[:accessToken])         
         y =(pageSize*pageNum)
         x =(y-pageSize) 
         @list = @user.lists 
         total= @list.count
         @list = @list.all(:select=>[:name,:id,:listtype,:description ], :include=>[:items=>@list[x].items.count])    
         @list = @list[x .. y] 
         #listResponse={:name=>@list.name}        
         response = {:total =>total,:page => pageNum, :limit=> pageSize, :userId=> @user.id, :accessToken=> @user.access_key.key , :list=>@list } 
         #response = {:lists => @list}
         respond_to do |format|
           format.json {render :json  => response}
         end
      end        
     end
   end

スキーマ情報

# == Schema Information
#
# Table name: lists
#
#  id          :integer          not null, primary key
#  name        :string(255)
#  active      :boolean
#  user_id     :integer
#  listtype    :string(255)
#  description :text
#  roughlist   :boolean
#  created_at  :datetime         not null
#  updated_at  :datetime         not null
#

class List < ActiveRecord::Base
  attr_accessible :name, :active , :type , :description , :roughlist,  :listtype
  belongs_to :user, :foreign_key => :user_id
  has_many :map_list_items
  has_many :items, :through => :map_list_items
  #has_and_belongs_to_many :items

end

And my item schema is here

# == Schema Information
#
# Table name: items
#
#  id          :integer          not null, primary key
#  name        :string(255)
#  description :string(255)
#  user_id     :integer
#  barcode     :string(255)
#  asin_id     :string(255)
#  isbn_id     :string(255)
#  barcode_id  :integer
#  created_at  :datetime         not null
#  updated_at  :datetime         not null
#

class Item < ActiveRecord::Base
  belongs_to :barcode , :foreign_key => :barcode_id
  has_many :map_item_tags
  has_many :map_list_items
  has_many :lists, :through => :map_list_items
  #has_and_belongs_to_many :lists

end

私が取得するjsonファイルのサンプルは以下のとおりです

{
    "total": 3,
    "page": 1,
    "limit": 10,
    "userId": 5,
    "accessToken": "BAAFdQiIeExEBAOwtEtFXgI0c2k9kka3EQbEBDca2FGJZBQyIOLGfnJQr7k1FaGFEx6dzzWxQkxZB4uFSEj3HvZARyZBKLtTzn9NhEXEBtsBxuPBf2O5PxtofkZC4GQg9OmWGahJ42kZBuEay68rlDb",
    "list": [
        {
            "description": "",
            "id": 1,
            "listtype": "christmas",
            "name": "mom"
        },
        {
            "description": "",
            "id": 2,
            "listtype": "christmas",
            "name": "mom"
        },
        {
            "description": "",
            "id": 3,
            "listtype": "christmas",
            "name": "mom"
        }
    ]
}
4

1 に答える 1

0

json には act_as_api gem を使用します。モデルを介してもjsonを非常に簡単に作成できます。そこでは、独自の属性を簡単に追加できます。

于 2012-08-24T16:40:38.130 に答える