RoR ActiveRecord Join Help for semi AI App
RoR ActiveRecord Join Help for semi AI App
正在开发 RoR 应用程序。将 Tinder 视为带有一点基本 AI 的艺术作品。当您喜欢或不喜欢艺术时,该应用程序会根据其他用户的喜好向您展示您希望更喜欢的艺术。我正在编写代码以选择要显示的下一张图片。
我使用以下型号:
基本用户信息:
class User < ApplicationRecord
has_many :artworks
has_many :artists
has_many :art_views
end
关于每件作品的信息(价格、高度、宽度等)
class Artwork < ApplicationRecord
belongs_to :user
belongs_to :artist
has_many :art_views
end
表示向用户展示了哪些艺术作品(boolean liked 表示用户是否喜欢该艺术作品)
class ArtView < ApplicationRecord
belongs_to :user
belongs_to :artwork
end
逻辑很简单:在找到 current_user 喜欢的最后一个作品后(在 ArtView 中),找到其他也喜欢相同作品的用户(也在 ArtView 中),然后找到其他用户喜欢的新作品未被 current_user 看到(ArtView 中无记录)
我正在使用以下连接:
@artwork = Artwork.joins(:artview)
.where(:artviews => { :liked => true})
.where(:artviews => { :artwork_id => @artwork_id})
.where.not(:artviews => { user_id: @id })
我收到以下错误:
Can't join 'Artwork' to association named 'artview'; perhaps you misspelled it?
非常感谢任何 guidance/suggestions(都在修复错误 and/or 改进逻辑,总的来说)
一个ArtView有很多个ArtView,所以在使用的时候要参考那个关系joins
。
它应该像这样工作:
Artwork.joins(:art_views)
同样在使用join
ed列时(不管是那种关系),你应该使用table的“真实”名称;它是复数形式——这就是 Rails 命名它创建的 table 的方式,除非另有说明:
Artwork
.joins(:art_views)
.where(:art_views => { :liked => true})
.where(:art_views => { :artwork_id => @artwork_id})
.where.not(:art_views => { user_id: @id })
正在开发 RoR 应用程序。将 Tinder 视为带有一点基本 AI 的艺术作品。当您喜欢或不喜欢艺术时,该应用程序会根据其他用户的喜好向您展示您希望更喜欢的艺术。我正在编写代码以选择要显示的下一张图片。
我使用以下型号:
基本用户信息:
class User < ApplicationRecord
has_many :artworks
has_many :artists
has_many :art_views
end
关于每件作品的信息(价格、高度、宽度等)
class Artwork < ApplicationRecord
belongs_to :user
belongs_to :artist
has_many :art_views
end
表示向用户展示了哪些艺术作品(boolean liked 表示用户是否喜欢该艺术作品)
class ArtView < ApplicationRecord
belongs_to :user
belongs_to :artwork
end
逻辑很简单:在找到 current_user 喜欢的最后一个作品后(在 ArtView 中),找到其他也喜欢相同作品的用户(也在 ArtView 中),然后找到其他用户喜欢的新作品未被 current_user 看到(ArtView 中无记录)
我正在使用以下连接:
@artwork = Artwork.joins(:artview)
.where(:artviews => { :liked => true})
.where(:artviews => { :artwork_id => @artwork_id})
.where.not(:artviews => { user_id: @id })
我收到以下错误:
Can't join 'Artwork' to association named 'artview'; perhaps you misspelled it?
非常感谢任何 guidance/suggestions(都在修复错误 and/or 改进逻辑,总的来说)
一个ArtView有很多个ArtView,所以在使用的时候要参考那个关系joins
。
它应该像这样工作:
Artwork.joins(:art_views)
同样在使用join
ed列时(不管是那种关系),你应该使用table的“真实”名称;它是复数形式——这就是 Rails 命名它创建的 table 的方式,除非另有说明:
Artwork
.joins(:art_views)
.where(:art_views => { :liked => true})
.where(:art_views => { :artwork_id => @artwork_id})
.where.not(:art_views => { user_id: @id })