如果有人问过并回答了这个问题,请原谅我。我正在编写一个系统,它将破坏用户名/地址等众多内容。名称和地址以每周文件Feed的形式出现,因此我们必须确定该信息何时更改,然后相应地更新我们的系统以反映新信息。我必须始终保留一个记录,如果您看到多个条目,那么当前是设计的。
让我列出我们为这个例子建立的模型(例如简化字段):
class Member < ActiveRecord::Base
has_many :addresses
has_many :names
end
class Name < ActiveRecord::Base
belongs_to :member
# has fields of firstname and lastname for this example
end
class Address < ActiveRecord::Base
belongs_to :member
# has fields of lineone, city, state and zipcode for this example
end
所以我想知道如果有任何资源可以将这些记录中的信息与文件中的内容进行比较,然后根据需要进行更新。显然,所有模型中的字段都必须被忽略且不在文件上。
是否建议创建未存储的记录然后比较两个对象如何?我是否需要进行字符串比较,然后根据需要更新/添加记录?
我会试着澄清一下我是否认为这种方式很糟糕,显然还没有很好地解决这个问题。在此先感谢您的帮助和理解,所有人都可以提供!
标记
答案 0 :(得分:0)
听起来我需要创建一个程序(可能是一个由cron作业调用的rake任务)来解析你的文件并相应地与数据库进行比较和更新。
我假设您收到的文件采用某种格式,如XML或CSV,以便您可以提取包含相关列的记录。有一些工具可以处理特定的文件格式。有关如何解析CSV文件的示例,请参阅:
Using CSV Class to parse a .csv file in Ruby
我假设用户名不会更改,但您想检测地址是否更改。您可以遍历文件并获取每行的用户名和地址,并在数据库中查找用户(通过用户名)并检查地址是相同还是不同。如果地址不同,请更新该记录。