ruby-on-rails - 未定义的方法 `referrals' 用于#
我正在实施推荐系统 rails 5.1。我想推荐到第 8 代。我有一个隶属关系类如下:
class Affiliation < ApplicationRecord
belongs_to :affiliate, :class_name => "User", :fore
问题描述
我正在实施推荐系统 rails 5.1。我想推荐到第 8 代。我有一个隶属关系类如下:
class Affiliation < ApplicationRecord
belongs_to :affiliate, :class_name => "User", :foreign_key => "affiliate_id"
belongs_to :referred, :class_name => "User", :foreign_key => "referred_id"
validates_presence_of :affiliate, :referred
validates_uniqueness_of :referred_id
private
def validate
errors.add_to_base("Affiliate and Referrer can't be the same
user.") if affiliate and (affiliate == referred)
end
end
我的用户.rb
class User < ApplicationRecord
has_many :affiliations, :foreign_key => "affiliate_id", :dependent => :destroy
has_many :referrals, :through => :affiliations, :source => :referred
# map.affiliate_referral 'a/:referrer_code', :controller =>
'referrals', :action => 'new'
def affiliate_link
"https://localhost:3000/members/new/?referrer_code=#
{self.affiliate_code}"
end
现在推荐系统正在运行我可以为他们的推荐人创建成员
挑战在于如何查看第 1 代到第 8 代。我收到此错误:
undefined method `referrals' for #<User::ActiveRecord_Associations_CollectionProxy:0x00007f48e4c2d2e0>
我可以推荐第一代,但从第二代开始就不行了。
任何帮助请...???这是我的仪表板控制器
class DashboardController < ApplicationController
def dashboard
# storage for referrals and affilations through eight
generations
#generate first generation referrals
def flatten_scopes(scopes)
scopes.inject([]) { |a,r| r.is_a?(Array) ? a += flatten_scopes(r) : a.push(r) }
end
@firstgeners = referral_gen(current_user)
@secondgeners ||= []
@thirdgeners ||= []
@fourthgeners ||= []
@fifthgeners ||= []
@sixthgeners ||= []
@seventhgeners ||= []
@eightgeners ||= []
#loop first generation referrals to get the affiliates to
form our second
generation affiliations
#@firstgeners = @firstgeners1.flatten
#@secondgeners1 = []
@firstgeners = flatten_scopes(@firstgeners)
if @firstgeners.any?
@firstgeners.each do |u|
if u.referrals.any?
@secondgeners << u.referrals
end
end
end
#@secondgeners = @secondgeners1.flatten
#from second generation referrals generate the affiliations
# @thirdgeners1 = []
@secondgeners = flatten_scopes(@secondgeners)
if @secondgeners.any?
@secondgeners.each do |u|
if u.referrals.any?
@thirdgeners << u.referrals
end
end
end
#@thirdgeners = @thirdgeners1.flatten
@thirdgeners = flatten_scopes(@thirdgeners)
#from third generation referrals generate the affiliations
if @thirdgeners.any?
@thirdgeners.each do |u|
if u.referrals.any?
@fourthgeners << u.referrals
end
end
end
#@fourthgeners = @fourthgeners1.flatten
#from third generation referrals generate the affiliations
@fourthgeners = flatten_scopes(@fourthgeners)
if @fourthgeners.any?
@fourthgeners.each do |u|
if u.referrals.any?
@fifthgeners << u.referrals
end
end
end
# @fifthgeners = @fifthgeners1.flatten
@fifthgeners = flatten_scopes(@fifthgeners)
if @fifthgeners.any?
@fifthgeners.each do |u|
if u.referrals.any?
@sixthgeners << u.referrals
end
end
end
# @sixthgeners = @sixthgeners1.flatten
@sixthgeners = flatten_scopes(@sixthgeners)
if @sixthgeners.any?
@sixthgeners.each do |u|
if u.referrals.any?
@seventhgeners << u.referrals
end
end
end
#@seventhgeners = @seventhgeners.flatten
@secondgeners = flatten_scopes(@seventhgeners)
if @seventhgeners.any?
@seventhgeners.each do |u|
if u.referrals.any?
@eightgeners << u.referrals
end
end
end
#@eightgeners = @eightgeners1.flatten
end
#generate all affiliations of current_user
def referral_gen(user)
referrals = user.referrals
return referrals
end
如何在 Python 中将 UTM 转换为纬度/经度?
{
"type": "MultiPolygon",
"coordinates": [[[
[6707794.77817316, 1952512.97762237],
[6707794.43138905, 1952566.21209599],
[6707897.49942442, 1952567.26754007],
[6707897.9039513, 1952513.5347079],
[6707794.77817316, 1952512.97762237]
]]]
}
这些是我在萨克拉门托市的 UTM 坐标
from pyproj import Proj
Lat = 52.063098675
Lon = -114.132980348
ZoneNo = "11" #Manually input or from other sources
myProj = Proj("+proj=utm +zone="+\
ZoneNo+", +north +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
Lon2, Lat2 = myProj(UTMx, UTMy,inverse=True)
[57.645243963689346, -97.82662155895939][57.64521883657446,
-97.82633467103226][57.64520287229081, -97.82615238782866]
[57.64518564728056, -97.82595574421379][57.646086991794625,
-97.82587777819731][57.64614690939316, -97.8265560026529]
[57.645243963689346, -97.82662155895939]
但是这个返回坐标位于加拿大。但我想在萨克拉门托市找到这个纵向和横向的
谁能帮我转换正确的格式以将 UTM 转换为 LAN LONG 坐标。
解决方案
错误来自仪表板控制器这一行
if u.referrals.any?
@thirdgeners << u.referrals
这条线在下面的块内.. 一旦我的第一代推荐人推荐了其他人。发生错误。如果他们没有,它工作得很好。只是打电话给我的推荐人,因为我有活跃的记录关联,所以效果很好。但我总 current_user.referrals 会给我用户数组。我可以遍历它们并获得他们的推荐以及 user.referrals 并重复直到 8 次。但不是那样工作。
@secondgeners = flatten_scopes(@secondgeners)
if @secondgeners.any?
@secondgeners.each do |u|
if u.referrals.any?
@thirdgeners << u.referrals
end
end
end
推荐阅读
- python - 从外部 json 文件打开字典时出错
- cytoscape.js - 知道 cy 实例是否已被销毁
- angular - 绑定到 ngModel 的管道(纯或不纯)中的力变化检测
- python - 如何将形状 (60,58) (60,59) 的数组更改为相等
- python - 如何在循环中实现气流 DAG
- javascript - 无法理解这个 javascript 解构语句
- c++ - 如何让我的 strchr 函数将 'const char' 和 'char' 数组作为第一个参数?
- java - 如何在 JUnit 5 中使用 mockito 3.0?
- docker - LXC 上的 Docker - rm 文件:注册层失败:处理 tar 文件时出错(退出状态 1):不允许操作
- url - 对页面部分使用非哈希 URL 的优势以及如何实现它们?
我正在实施推荐系统 rails 5.1。我想推荐到第 8 代。我有一个隶属关系类如下:
class Affiliation < ApplicationRecord
belongs_to :affiliate, :class_name => "User", :fore
问题描述
我正在实施推荐系统 rails 5.1。我想推荐到第 8 代。我有一个隶属关系类如下:
class Affiliation < ApplicationRecord
belongs_to :affiliate, :class_name => "User", :foreign_key => "affiliate_id"
belongs_to :referred, :class_name => "User", :foreign_key => "referred_id"
validates_presence_of :affiliate, :referred
validates_uniqueness_of :referred_id
private
def validate
errors.add_to_base("Affiliate and Referrer can't be the same
user.") if affiliate and (affiliate == referred)
end
end
我的用户.rb
class User < ApplicationRecord
has_many :affiliations, :foreign_key => "affiliate_id", :dependent => :destroy
has_many :referrals, :through => :affiliations, :source => :referred
# map.affiliate_referral 'a/:referrer_code', :controller =>
'referrals', :action => 'new'
def affiliate_link
"https://localhost:3000/members/new/?referrer_code=#
{self.affiliate_code}"
end
现在推荐系统正在运行我可以为他们的推荐人创建成员
挑战在于如何查看第 1 代到第 8 代。我收到此错误:
undefined method `referrals' for #<User::ActiveRecord_Associations_CollectionProxy:0x00007f48e4c2d2e0>
我可以推荐第一代,但从第二代开始就不行了。
任何帮助请...???这是我的仪表板控制器
class DashboardController < ApplicationController
def dashboard
# storage for referrals and affilations through eight
generations
#generate first generation referrals
def flatten_scopes(scopes)
scopes.inject([]) { |a,r| r.is_a?(Array) ? a += flatten_scopes(r) : a.push(r) }
end
@firstgeners = referral_gen(current_user)
@secondgeners ||= []
@thirdgeners ||= []
@fourthgeners ||= []
@fifthgeners ||= []
@sixthgeners ||= []
@seventhgeners ||= []
@eightgeners ||= []
#loop first generation referrals to get the affiliates to
form our second
generation affiliations
#@firstgeners = @firstgeners1.flatten
#@secondgeners1 = []
@firstgeners = flatten_scopes(@firstgeners)
if @firstgeners.any?
@firstgeners.each do |u|
if u.referrals.any?
@secondgeners << u.referrals
end
end
end
#@secondgeners = @secondgeners1.flatten
#from second generation referrals generate the affiliations
# @thirdgeners1 = []
@secondgeners = flatten_scopes(@secondgeners)
if @secondgeners.any?
@secondgeners.each do |u|
if u.referrals.any?
@thirdgeners << u.referrals
end
end
end
#@thirdgeners = @thirdgeners1.flatten
@thirdgeners = flatten_scopes(@thirdgeners)
#from third generation referrals generate the affiliations
if @thirdgeners.any?
@thirdgeners.each do |u|
if u.referrals.any?
@fourthgeners << u.referrals
end
end
end
#@fourthgeners = @fourthgeners1.flatten
#from third generation referrals generate the affiliations
@fourthgeners = flatten_scopes(@fourthgeners)
if @fourthgeners.any?
@fourthgeners.each do |u|
if u.referrals.any?
@fifthgeners << u.referrals
end
end
end
# @fifthgeners = @fifthgeners1.flatten
@fifthgeners = flatten_scopes(@fifthgeners)
if @fifthgeners.any?
@fifthgeners.each do |u|
if u.referrals.any?
@sixthgeners << u.referrals
end
end
end
# @sixthgeners = @sixthgeners1.flatten
@sixthgeners = flatten_scopes(@sixthgeners)
if @sixthgeners.any?
@sixthgeners.each do |u|
if u.referrals.any?
@seventhgeners << u.referrals
end
end
end
#@seventhgeners = @seventhgeners.flatten
@secondgeners = flatten_scopes(@seventhgeners)
if @seventhgeners.any?
@seventhgeners.each do |u|
if u.referrals.any?
@eightgeners << u.referrals
end
end
end
#@eightgeners = @eightgeners1.flatten
end
#generate all affiliations of current_user
def referral_gen(user)
referrals = user.referrals
return referrals
end
如何在 Python 中将 UTM 转换为纬度/经度?
{
"type": "MultiPolygon",
"coordinates": [[[
[6707794.77817316, 1952512.97762237],
[6707794.43138905, 1952566.21209599],
[6707897.49942442, 1952567.26754007],
[6707897.9039513, 1952513.5347079],
[6707794.77817316, 1952512.97762237]
]]]
}
这些是我在萨克拉门托市的 UTM 坐标
from pyproj import Proj
Lat = 52.063098675
Lon = -114.132980348
ZoneNo = "11" #Manually input or from other sources
myProj = Proj("+proj=utm +zone="+\
ZoneNo+", +north +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
Lon2, Lat2 = myProj(UTMx, UTMy,inverse=True)
[57.645243963689346, -97.82662155895939][57.64521883657446,
-97.82633467103226][57.64520287229081, -97.82615238782866]
[57.64518564728056, -97.82595574421379][57.646086991794625,
-97.82587777819731][57.64614690939316, -97.8265560026529]
[57.645243963689346, -97.82662155895939]
但是这个返回坐标位于加拿大。但我想在萨克拉门托市找到这个纵向和横向的
谁能帮我转换正确的格式以将 UTM 转换为 LAN LONG 坐标。
解决方案
错误来自仪表板控制器这一行
if u.referrals.any?
@thirdgeners << u.referrals
这条线在下面的块内.. 一旦我的第一代推荐人推荐了其他人。发生错误。如果他们没有,它工作得很好。只是打电话给我的推荐人,因为我有活跃的记录关联,所以效果很好。但我总 current_user.referrals 会给我用户数组。我可以遍历它们并获得他们的推荐以及 user.referrals 并重复直到 8 次。但不是那样工作。
@secondgeners = flatten_scopes(@secondgeners)
if @secondgeners.any?
@secondgeners.each do |u|
if u.referrals.any?
@thirdgeners << u.referrals
end
end
end
推荐阅读
- python - 从外部 json 文件打开字典时出错
- cytoscape.js - 知道 cy 实例是否已被销毁
- angular - 绑定到 ngModel 的管道(纯或不纯)中的力变化检测
- python - 如何将形状 (60,58) (60,59) 的数组更改为相等
- python - 如何在循环中实现气流 DAG
- javascript - 无法理解这个 javascript 解构语句
- c++ - 如何让我的 strchr 函数将 'const char' 和 'char' 数组作为第一个参数?
- java - 如何在 JUnit 5 中使用 mockito 3.0?
- docker - LXC 上的 Docker - rm 文件:注册层失败:处理 tar 文件时出错(退出状态 1):不允许操作
- url - 对页面部分使用非哈希 URL 的优势以及如何实现它们?