当我尝试从使用Twitter API的推文列表中收藏图片时,我在我的Rails应用程序中出现错误。ActiveRecord :: StatementInvalid在PicController#收藏夹
这里的pic_controller.rb
class PicController < ApplicationController
def favorite
if current_user.present?
pic = Pic.find(params[:url])
FavPic.create pic: pic, user: current_user
# user and pic automaically have this `FavPic` assigned
end
end
end
和这里的user.rb
class User < ActiveRecord::Base
def self.from_omniauth(auth)
user = where(provider: auth.provider, uid: auth.uid).first || create_from_omniauth(auth)
user.oauth_token = auth["credentials"]["token"]
user.oauth_secret = auth["credentials"]["secret"]
user.save!
user
end
def self.create_from_omniauth(auth)
create! do |user|
user.provider = auth["provider"]
user.uid = auth["uid"]
user.name = auth["info"]["nickname"]
end
end
def twitter
if provider == "twitter"
@twitter ||= Twitter::Client.new(oauth_token: oauth_token, oauth_token_secret: oauth_secret)
end
end
has_many :fav_pics
has_many :pics_favorited,
class_name: 'Pic',
through: :fav_pics
end
class FavPic < ActiveRecord::Base
belongs_to :user
belongs_to :pic
end
class Pic < ActiveRecord::Base
has_many :fav_pics
has_many :fav_users,
class_name: 'User',
through: :fav_pics
end
不知道我要去的地方错或如何排查但是这是我得到的错误。 PG::UndefinedTable: ERROR: relation "pics" does not exist LINE 5: WHERE a.attrelid = '"pics"'::regclass^: SELECT a.attname, format_type(a.atttypid, a.atttypmod), pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod FROM pg_attribute a LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum WHERE a.attrelid = '"pics"'::regclass AND a.attnum > 0 AND NOT a.attisdropped ORDER BY a.attnum
你运行过'rake db:migrate'吗?假设你有一个迁移来创建'pics'表。 – DiegoSalazar
@ diego.greyrobot我如何创建这样的迁移?我想这就是我所缺少的,因为我运行了'rake db:migrate',因为我已经通过 – sdybskiy
查看了很多q的建议show your'schema.rb'文件 –