我有一个帐户模型如下(简化):
class Account < ActiveRecord::Base
attr_accessible :account_number, :display_name, :master_account_id
has_many :child_accounts, :class_name => "Account", :foreign_key => "id"
belongs_to :master_account, :class_name => "Account", :foreign_key => "master_account_id"
end
Run Code Online (Sandbox Code Playgroud)
@account.master_account目前工作正常,但我也希望能够访问@account.child_accounts- 我需要做些什么才能解决这个问题?
我的模型设置如下(联系人中的自我关联,因为我想为经销商存储的信息镜像该表中的所有字段,似乎与DRY保持一致以使用现有的数据结构):
class Contact < ActiveRecord::Base
attr_accessible :reseller_id
has_and_belongs_to_many :users
has_many :reseller_clients, :class_name => "Contact", :foreign_key => "reseller_id"
belongs_to :reseller, :class_name => "Contact"
end
class User < ActiveRecord::Base
attr:accessible :name
has_and_belongs_to_many :contacts
end
Run Code Online (Sandbox Code Playgroud)
使用cancan,我想拥有一个能够管理自己联系的经销商登录.用户和经销商之间的映射是HABTM,因此可以通过执行can :manage Contact, :users => {:id => user.id}以下操作来实现.
我还希望经销商登录能够在以下逻辑中管理与managed_accounts描述的集合匹配的所有Contact:
reseller_contacts = user.contacts
managed_accounts = []
reseller_contacts.each do |i|
managed_accounts << i.reseller_clients
end
managed_accounts.flatten!
Run Code Online (Sandbox Code Playgroud)
我目前的能力课程有:
class Ability
include CanCan::Ability
def initialize(user)
if user.role? :reseller
# Allow resellers to manage their own Contact
can :manage, Contact, :users => …Run Code Online (Sandbox Code Playgroud) 我有一个在MySQL 5.6上运行良好的存储过程。在最近的服务器迁移中,我们升级到MySQL 5.7.19。
我的存储过程现在抛出错误:
Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'utility-monitor.daily_readings.building_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by: CALL monthly_readings(2017, 1, NULL, 1, 1))
我已经设置了sql_mode对""通过/var/mysql/my.cnf文件,重新启动mysql服务,并通过控制台,以确认登录的sql_mode通过是空白SELECT @@sql_mode;
尽管如此,当我尝试运行存储过程时,我仍然收到上述错误。
接下来,我该怎么办才能继续排除错误的出处?
我正在做一个项目,其中多个类将包括MyModule. 在包含模块后,我希望包含模块的类将类类型的句柄推送到特定的类级数组。
我在下面尝试过的伪代码没有达到我想要的效果:
class Poly
@@tracking = []
end
module MyModule
def initialize(klass)
Poly.tracking << self # Where `self` is the class, e.g. `MyClass1`, not an instance of the class.
end
end
class MyClass1
include MyModule
end
class MyClass2
include MyModule
end
Run Code Online (Sandbox Code Playgroud)
加载后,我希望Poly.tracking等于[MyClass1, MyClass2].
由于activerecord (< 5.0, >= 3.2)我能够使用activerecord-mysql-unsignedgem 在我的 MySQL 数据库中创建一个 UNSIGNED INT,但是该 gem 没有更新,而且我在 Rails 5 中找不到任何关于本机支持的文档。
是否有选项散列或可以在 add_column 方法中调用的东西,允许这样做?
我有以下内容:
class ModelA < ApplicationRecord
has_many :model_bs, dependent: :destroy
end
class ModelB < ApplicationRecord
belongs_to :model_a
after_destroy :action_only_if_model_a_exists
private
def action_only_if_model_a_exists
# Do things
end
end
Run Code Online (Sandbox Code Playgroud)
当我调用 时model_a.destroy,我需要能够在action_only_if_model_a_existsModelB 的回调中确定关联的 ModelA 是否仍然存在或即将被销毁。
是否有一个很好的内置 Rails 方法可以做到这一点,或者我是否需要在早期的回调中在 ModelA 中设置一个标志(例如before_destroy),然后我可以在 ModelB 的回调中检查?
编辑
我已经做了多次测试并确认在action_only_if_model_a_exists回调中执行以下操作没有帮助:
> model_a.persisted?
true
> model_a.destroyed?
false
> model_a.frozen?
false
Run Code Online (Sandbox Code Playgroud) ansible -playbook 文档说 -T 将“以秒为单位覆盖连接超时(默认=10)”。
在/etc/ansible/ansible.cfg文件的 部分下[persistent_connection],有connect_timeout (默认 30 秒)和command_timeout (默认 10 秒)。
ansible-playbook 文档表明 connect_timeout被覆盖,但页面指定的默认值与connect_timeout默认值不匹配,它与command_timeout默认值匹配。
那么,ansible-playbook 命令上的 -T 标志是否会覆盖connect_timeout、command_timeout或与其中任何一个都不相关的其他超时?
与arduino合作.我在一个过程中运行两次的函数中有以下代码:
int hours = 7;
char hour = hours+'0';
debug(&hour);
char hour2 = hours+'0';
debug(&hour2);
Run Code Online (Sandbox Code Playgroud)
该debug功能是:
void debug(char message[]) {
if (debugEnabled == true) {
Serial.println(message);
}
}
Run Code Online (Sandbox Code Playgroud)
全局debugEnabled标志初始化为true.
每次完整进程运行时,我都会得到以下输出(因此执行第一个代码块两次):
7
7
72
7
Run Code Online (Sandbox Code Playgroud)
在第二次写入第一个变量时,我看不到任何原因我在那里得到72,特别是因为hour2每次都正确打印变量.
任何关于可能出错的建议或如何进一步调试这一点都将非常感激.
mysql ×2
activemodel ×1
ansible ×1
arduino ×1
associations ×1
c++ ×1
cancan ×1
mysql-5.7 ×1
ruby ×1