小编Gar*_*eld的帖子

Rails:非id外键查找ActiveRecord

我想ActiveRecord通过表中的非id列进行查找.当我向你提供我的代码示例时,希望这很清楚.

class CoachClass < ActiveRecord::Base
  belongs_to :coach
end

class Coach < ActiveRecord::Base
    has_many :coach_classes, :foreign_key => 'user_name'
end
Run Code Online (Sandbox Code Playgroud)

当我这样做时 coach_obj.coach_classes,这正确地触发了

SELECT * FROM `coach_classes` WHERE (`coach_classes`.user_name = 2)
Run Code Online (Sandbox Code Playgroud)

(2是教练在id这里,这是我的问题.)

我想让它触发

SELECT * FROM `coach_classes` WHERE (`coach_classes`.user_name = 'David')
Run Code Online (Sandbox Code Playgroud)

('大卫'是那个教练的user_name)

user_name 是唯一的,并存在于两个表中.

出于某种原因coach_id,我不想在我的coach_classes桌子上.

activerecord ruby-on-rails foreign-key-relationship has-many belongs-to

24
推荐指数
2
解决办法
1万
查看次数

删除所有MySQL外键约束不会失败的地方

我试图删除一些记录,但我收到以下错误:

无法删除或更新父行:外键约束失败

问题是,我希望删除的100条记录中只有1或2条中的外键约束失败.我希望编写一个删除这些98-99记录的查询,跳过失败的1或2记录,稍后我可以手动检查和删除/修改.不是因为一些有问题的记录而停止,而是继续其他人,忽略了这一点.

有一个巧妙的方法来做到这一点?

mysql foreign-keys foreign-key-relationship sql-delete

12
推荐指数
1
解决办法
3779
查看次数

测试rake任务中定义的方法

我想测试rake任务中定义的方法.

耙文件

#lib/tasks/simple_task.rake
namespace :xyz do
    task :simple_task => :environment do
        begin
            if task_needs_to_run?
                puts "Lets run this..."
                #some code which I don't wish to test
                ...
            end
        end
    end
    def task_needs_to_run?
        # code that needs testing
        return 2 > 1
    end

end
Run Code Online (Sandbox Code Playgroud)

现在,我想task_needs_to_run?在测试文件中测试这个方法我该怎么做?

附加说明:理想情况下,我希望在rake任务中测试另一个私有方法......但我可以稍后再担心.

testing rake unit-testing ruby-on-rails rake-task

10
推荐指数
2
解决办法
4632
查看次数

DLS_DEAD_LOCAL_STORE SuppressWarnings FindBugs误报

我正试图消除DLS_DEAD_LOCAL_STORE的误报

这是我到目前为止所尝试的:

@SuppressWarnings("DLS_DEAD_LOCAL_STORE")
Run Code Online (Sandbox Code Playgroud)

@edu.umd.cs.findbugs.annotations.SuppressWarnings("DLS_DEAD_LOCAL_STORE")

(基于SuppressWarnings不适用于FindBugs)

@edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "DLS_DEAD_LOCAL_STORE", justification = "please go away")

基于http://osdir.com/ml/java-findbugs-general/2010-06/msg00017.html

但是这些选择都没有帮助.请指教.使用Eclipse Indigo.

java findbugs suppress-warnings spring-annotations

7
推荐指数
2
解决办法
8787
查看次数

EasyMock方法参数中的长null匹配

我想匹配一个有3个参数的方法:一个String,一个Long和一个customObject

测试应该与String 完全匹配,确保Long为null并确保传递的自定义对象的类型正确.

就像是:

    EasyMock.expect(mockClass.myMethod(
                        EasyMock.eq("exact string"), 
                        EasyMock.isA(Long.class), 
                        EasyMock.isA(CustomObject.class)));
Run Code Online (Sandbox Code Playgroud)

这可能不正确地匹配方法,因为Long应该为null.

我不能放,EasyMock.isNull()因为它将是一个特定的匹配和泛型和细节不能一起去.有小费吗 ?

java unit-testing easymock

3
推荐指数
1
解决办法
4627
查看次数

在不同的密钥上连接两次相同的表

我有两个表accountssubs.
第一台具有id与第二表有田id,requester_account_id,grabber_account_id

我想要计算帐户制作了多少个子请求,以及他做了多少抓取(基于是否requester_account_id/grabber_account_id填充了他的id)

在一个查询中

输出:

+------------+----------------+-----------------+
| account_id | subs_requested | subs_grabbed    |
+------------+----------------+-----------------+
|  1         | 4              | 3               |
|  3         | 2              | 1               |
+------------+----------------+-----------------+
Run Code Online (Sandbox Code Playgroud)

mysql sql join

2
推荐指数
1
解决办法
3554
查看次数

从控制器动态更改视图 - 在Rails中使用线程进度条

我有时间在我的控制器中执行任务,我想在我的视图中触发一个简单的进度条/进度状态.

在我的控制器中我有类似的东西

threads = []
total.times do |x|
    Thread.new {
        the_time_taking_task(x)
        #Something here to trigger the progressbar in the view
    }
end

threads.each { |aThread|  aThread.join }
render :action => 'some_action'    
Run Code Online (Sandbox Code Playgroud)

我不能在那里放一个渲染,因为它会抛出一个双渲染错误.我尝试放一个渲染并返回那里,我得到了return can't jump across threads'错误

我正在尝试渲染,因为它似乎是我的控制器可以查看的唯一方式.我的方法有误吗?

想要通过该调用应用进度条宽度的视图中需要这样简单的东西

<div style="width: <%= (percent_val)%>px; ">
Run Code Online (Sandbox Code Playgroud)

请指教.

multithreading ruby-on-rails render progress-bar

1
推荐指数
1
解决办法
1315
查看次数