我关心的是我存储常量:
module Group::Constants
extend ActiveSupport::Concern
MEMBERSHIP_STATUSES = %w(accepted invited requested
rejected_by_group rejected_group)
end
Run Code Online (Sandbox Code Playgroud)
我希望使用这些常量的另一个问题是:
module User::Groupable
extend ActiveSupport::Concern
include Group::Constants
MEMBERSHIP_STATUSES.each do |status_name|
define_method "#{status_name}_groups" do
groups.where(:user_memberships => {:status => status_name})
end
end
end
Run Code Online (Sandbox Code Playgroud)
不幸的是,这会导致路由错误:
uninitialized constant User::Groupable::MEMBERSHIP_STATUSES
Run Code Online (Sandbox Code Playgroud)
看起来第一个问题是在第二个问题中没有正确加载.如果是这样的话,我该怎么办呢?
我有这5个模型:卫报,学生,关系,关系类型和学校.在他们之间,我有这些联想
class Guardian < ActiveRecord::Base
belongs_to :school
has_many :relationships, :dependent => :destroy
has_many :students, :through => :relationships
end
class Student < ActiveRecord::Base
belongs_to :school
has_many :relationships, :dependent => :destroy
has_many :guardians, :through => :relationships
end
class Relationship < ActiveRecord::Base
belongs_to :student
belongs_to :guardian
belongs_to :relationship_type
end
class School < ActiveRecord::Base
has_many :guardians, :dependent => :destroy
has_many :students, :dependent => :destroy
end
class RelationshipType < ActiveRecord::Base
has_many :relationships
end
Run Code Online (Sandbox Code Playgroud)
我想写一个定义关系的FactoryGirl.每个关系都必须有一个监护人和一个学生.这两个人必须属于同一所学校.监护人工厂与学校有联系,学生工厂也是如此.我一直无法让他们在同一所学校建造.我有以下代码:
FactoryGirl.define do
factory :relationship do
association :guardian
association :student, :school => …Run Code Online (Sandbox Code Playgroud) 当我得到它时,我通常会忽略这个错误并修复导致它的语法错误,但出于好奇,tLABEL在意外的tLABEL中究竟是什么意思?
我试过寻找答案,但只是让很多人试图帮助他们解决错误.
我也发现了这个定义:
tlabel是一个非窗口的VCL控件,它在窗体上显示不可编辑的文本.它在StdCtrls.pas单元中定义.
但我不认为这是一个非常容易理解的定义.
显然,如果包含文本的URL ¬被用作字段属性的一部分,许多浏览器会将其解释为"¬".所以这个HTML代码:
<a href="#" onclick="window.location='http://www.example.com?some_param=1¬ify=true';">Click here</a>
Run Code Online (Sandbox Code Playgroud)
将呈现为:
<a href="#" onclick="window.location='http://www.example.com?some_param=1¬ify=true';">Click here</a>
Run Code Online (Sandbox Code Playgroud)
我发现一对夫妇的替代品替代¬用&%6Eot,或通过发布形式,而不是得到一个参数化URL.但职位是并不总是一个受欢迎的选择和替代是大家公认的黑客-它也将需要处理与其他常见标记为¢,¤,£,§,©,®...(摘自列表在这里).
当然有人有更好的解决方案吗?
使用Ruby 1.8.6/Rails 2.3.2
我注意到在我的任何ActiveRecord模型类上调用的任何方法都返回nil而不是NoMethodError.除了恼人的,这是打破了动态查找器(find_by_name,find_by_id,等),因为他们总是返回nil即使记录存在.不从ActiveRecord :: Base派生的标准类不受影响.
有没有办法在ActiveRecord :: Base之前跟踪什么是拦截method_missing?
更新:
切换到1.8.7后,我发现(感谢@MichaelKohl)will_paginate插件首先处理method_missing.但是will_paginate在我们的系统中已经存在了很长一段时间(并且没有改变),罪魁祸首必须是后来的链接.任何想法如何看到这个链中的下一步?
更新:
事实证明,有一个gem(annotate-2.4.0)是猴子修补ActiveRecord::Base#method_missing作为一个空白的方法.卸载gem解决了我的问题.虽然没有给出的答案实际上找到了问题,但@Yanhao的答案最接近,因为它只需要一个小调整来发现有问题的别名方法
我正在使用SQL中的select语句,并且遇到了尝试创建包含case语句或if else语句的where子句的问题.我想根据变量的值选择记录.如果变量为"True",则仅返回列为null的select语句中的记录.如果变量不是"True",则返回所有记录,无论该列是否为空.
关于如何做到这一点的任何提示?
以下是我想要做的一个简单示例:
declare @option1 as varchar(5)
--This can be True or False so to test i just put the Set option below
set @option1 = 'True'
Select a,b,c,d...
from ...
where d = case when @option1 = 'True' then NULL End
Run Code Online (Sandbox Code Playgroud)
这是我不知道该怎么做的部分.如果变量为"True",我只需要过滤掉记录,因此不确定在案例的else部分放置什么.
WHERE CONDITION1='ABC'
AND Status =
CASE @Option
WHEN 1 THEN 'True'
WHEN 2 THEN 'False'
WHEN 3 THEN NULL
WHEn 4 THEN **IN ('True', 'False', NULL)**
END
Run Code Online (Sandbox Code Playgroud)
如何编写查询,我的第一个选项直接匹配,= 但我的最后一个选项需要一个IN
上面的查询给出了错误,但我想要类似的东西,我无法找到.
我试图根据过去 18 个月内的访问次数将客户与“首选”商家联系起来,决胜局是最近的访问日期。我在决胜局方面遇到了一些麻烦。如果有两条记录根据某个 MemberID 的访问次数均排名第 1,我想将该 MemberID 的记录上的 IsFirst 位列设置为 1。我该怎么做呢?
sql ×3
ruby ×2
browser ×1
factory-bot ×1
html ×1
html-parsing ×1
in-clause ×1
rank ×1
t-sql ×1
tlabel ×1